package  main.java.leetcode.editor.cn;
//2023-07-18 20:05:43
//幂集。编写一种方法，返回某集合的所有子集。集合中不包含重复的元素。 
//
// 说明：解集不能包含重复的子集。 
//
// 示例: 
//
//  输入： nums = [1,2,3]
// 输出：
//[
//  [3],
//  [1],
//  [2],
//  [1,2,3],
//  [1,3],
//  [2,3],
//  [1,2],
//  []
//]
// 
// Related Topics 位运算 数组 回溯 👍 106 👎 0

import java.util.ArrayList;
import java.util.List;

class PowerSetLcci {
    public static void main(String[] args) {
        //创建该题目的对象方便调用
        Solution solution = new PowerSetLcci().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> ans = new ArrayList<>();
    public List<List<Integer>> subsets(int[] nums) {
        backtracking(nums,0);
        return res;
    }

    private void backtracking(int[] nums,int i){
        if(i == nums.length){
            res.add(new ArrayList<>(ans));
            return;
        }
        ans.add(nums[i]);
        backtracking(nums,i+1);
        ans.remove(ans.size()-1);
        backtracking(nums,i+1);
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
